package com.example.photo.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.example.photo.model.VO.PrizeVO;
import com.example.photo.model.VO.ScoreWorkVO;
import com.example.photo.model.domain.Prize;
import com.example.photo.model.request.add.NewPrizeRequest;
import com.example.photo.model.request.update.UpdatePrizeRequest;

import java.util.List;
import java.util.Map;

/**
* @author 85792
* @description 针对表【prize(奖项)】的数据库操作Service
* @createDate 2023-03-25 19:15:19
*/
public interface PrizeService extends IService<Prize> {

    // 创建奖项
    PrizeVO createPrize(NewPrizeRequest newPrizeRequest);

    // 将奖项关联到赛事
    void setContestForPrizes(List<Integer> prizeIds, Integer contestId);

    //根据赛事id查询奖项
    List<Integer> getIdsByContestId(Integer contestId);

    // 更新奖项信息
    PrizeVO updatePrize(UpdatePrizeRequest updatePrizeRequest);

    // 查询某个赛事下所有作品，包含均分
    List<ScoreWorkVO> listToPrize(long pageSize, long pageNum, Integer contestId);

    // 查询作品可以获得的奖项
    List<PrizeVO> getPrizes(Integer workId);

    // 给作品颁奖
    void conferPrize(Integer workId, Integer prizeId);

    // 撤销颁奖
    void withdrawalPrize(Integer workId);

    // 根据赛事id获取其所有的奖项，并按照奖项所属组分组
    Map<Integer, List<PrizeVO>> getPrizesByContestId(Integer contestId);
}
